package com.chen.service;

import com.chen.common.result.PageResult;
import com.chen.common.result.Result;
import com.chen.judge.codesandbox.model.JudgeResult;
import com.chen.popj.dto.ProblemDTO;
import com.chen.popj.dto.ProblemPageQueryDTO;
import com.chen.popj.dto.ProblemSubmitDTO;
import com.chen.popj.entity.ContestProblem;
import com.chen.popj.entity.Problem;
import com.chen.popj.vo.ProblemListVO;
import com.chen.popj.vo.ProblemSubmitVO;
import com.chen.popj.vo.ProblemVO;

import java.util.ArrayList;
import java.util.List;

public interface ProblemService {

    /**
     * 添加题目
     *
     * @param problemDTO
     */
    void addProblem(ProblemDTO problemDTO);

    /**
     * 题目分页查询
     *
     * @param problemPageQueryDTO
     * @return
     */
    PageResult pageQuery(ProblemPageQueryDTO problemPageQueryDTO);

    /**
     * 根据题目id查询题目详情
     *
     * @param problemId
     * @return
     */
    ProblemVO queryProblem(Integer problemId);

    /**
     * 添加用户编写的题目代码
     *
     * @param problemSubmitDTO
     */
    Integer problemSubmit(ProblemSubmitDTO problemSubmitDTO, Integer contestId);

    /**
     * 根据题目id获取题目信息
     *
     * @param problemId
     * @return
     */
    Problem getById(Integer problemId);

    /**
     * 根据提交id获取题目做题结果
     *
     * @param problemSubmitId
     * @return
     */
    JudgeResult getProblemResult(Integer problemSubmitId);

    /**
     * 根据比赛的题目ids和比赛id查询题目
     *
     * @param contestProblem
     * @return
     */
    List<ContestProblem> queryProblemByContestIds(List<Integer> contestProblem, Integer contestId);

    /**
     * 根据题目id删除题目
     * @param ids
     */
    void delete(ArrayList<Integer> ids);
}
